package com.hutra.utils {
	import flash.display.MovieClip;
	
	public class ParserString {
		/**
		 * Bài toán đặt ra: arr:Array = new Array("http://abc.com/1.swf","http://abc.com/4.swf","http://abc.com/k3.swf","http://abc.com/2.swf");
		 * Yêu cầu kết quả: arr:Array = new Array("1","2","3");
		 * Giải thích: Cắt chuỗi ra loại bỏ namefile nào không hợp lệ, namefile hợp lệ là name trong dai [0-9].swf
		 * Sau đó sắp sếp tăng dần đều.
		 */
		private var ArrNumber:Array = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
		
		public function ParserString() {
		}
		
		//Convert Array URL => Array File Name
		public function parseArrayUrl(arrURL:Array):Array {
			var arrTemp:Array = new Array();
			for (var i:int = 0; i < arrURL.length; i++) {
				arrTemp.push(subStringUrl(arrURL[i]));
			}
			
			return arrSubString(arrTemp);
		}
		
		//Lấy fileName từ URL
		private function subStringUrl(url:String):String {
			var fileName:String = "";
			fileName = url.substring(url.lastIndexOf('/', url.length) + 1, url.lastIndexOf('.', url.length));
			return fileName;
		}
		
		//Trả lại một mảng đã đuợc sắp xếp
		private function arrSubString(arr:Array):Array {
			var arrTemp:Array = new Array();
			for (var i:int = 0; i < arr.length; i++) {
				if (checkValidateFileName(arr[i]) == true) {
					trace(arr[i]);
					arrTemp.push(arr[i]);
				}
			}
			
			return sortFileName(arrTemp);
		}
		
		//Kiểm tra file đó có hợp lệ hay không
		private function checkValidateFileName(fileName:String):Boolean {
			var flag:Boolean = true;
			var arr:Array = new Array();
			arr = getArrayFromFileName(fileName);
			for (var i:int = 0; i < arr.length; i++) {
				if (checkNumber(arr[i]) == false) {
					flag = false;
					return flag;
				}
			}
			return flag;
		}
		
		//sort
		private function sortFileName(arr:Array):Array {
			var temp:String;
			for (var i:int = 0; i < arr.length; i++) {
				for (var j:int = i + 1; j < arr.length + 1; j++) {
					if (parseInt(arr[i]) > parseInt(arr[j])) {
						temp = arr[i];
						arr[i] = arr[j];
						arr[j] = temp;
					}
				}
			}
			return arr;
		}
		
		//Lấy mảng các ký tự dc cắt từ fileName
		private function getArrayFromFileName(fileName:String):Array {
			var arr:Array = new Array();
			for (var i:int = 0; i < fileName.length; i++) {
				arr.push(fileName.charAt(i));
			}
			return arr;
		}
		
		//Kiểm tra xem nó có thuộc mảng số kia không
		private function checkNumber(str:String):Boolean {
			var flag:Boolean = false;
			for (var i:int = 0; i < ArrNumber.length; i++) {
				if (str == ArrNumber[i]) {
					flag = true;
					return flag;
				}
			}
			return flag;
		}
	}

}
